End of a career

This is a follow-up to the previous post. I started reviewing the code that Claude vibe coded for me. It did not go well.

At the end of my vibe coding spree I had two applications – one CLI and another GUI – working seemingly flawlessly. Both did what I wanted, both showed results that looked correct.

As my previous post states, I decided to review the generated code. My goal was to understand what it was doing and learn how it works.

I did not expect the code to be such a mess. In one place it crammed three things into a single function, mixing application-level concerns into library code. In another, it split the code into a tangle of small functions with absolutely useless doc comments.

It may be my fault – I did not project my requirements clearly enough in the prompts. On the other hand, if I need to write a detailed spec explaining every function of a project I don't yet fully understand, I might as well just start writing the code. Writing the spec would take about as long as coding a POC, and then I can use AI surgically to quickly fill the gaps and bring the POC closer to the final vision. And it will be easier to refactor and improve.

I decided that I need to rewrite the main library code – the code that is used by both apps and that contains most of the logic. And I am doing it by hand.

I guess I am bad at vibe coding. I don't like writing essays as LLM prompts. I don't like writing hundreds of lines of markdown to teach the agent how to write code the way I want it. And I definitely don't trust AI to write code that would satisfy me. What I do trust it to do is write tons of good-looking code that will take a lot of time to review. And, granted, 80% of that code will be fine – maybe even 90% – but the final 10% will take all your brain power. Or you can stop caring.

I realized that I can't. Not for the projects I do care about.

For personal projects I will continue using AI the way I used it before – writing pieces of code that I can easily review. I'll use it for boilerplate, for things that I am sure it can do, and do it faster than me. I will not leave writing complete projects to AI.

Turned out my vibe coding career was short.

P.S. Oh, and after a closer look, it turns out the code doesn't work correctly in some cases. And because I vibe coded it, I never built up the domain knowledge to fix it myself. Another reason to go back to programming by hand.

Other posts on these topics: